package com.xjh.basestudy.designmode.behaviorMode.behaviorMode3_ChainOfResponsibility.p1_origin;

/**
 * @Author XuJianHua
 * @Date 2022/10/4 14:33
 * @Description
 * 10 000元的大额报销单终于被总监审批了。然而这种办事效率确实不敢恭维，申请人先找专员被升级处理，再找经理又被告知数额过大得去找总监，来来回回找了3个审批人处理，浪费了申请人的大量时间与精力。
 * 虽然事情是办理了，但申请人非常不满意，审批流程太过烦琐，总觉得有种被踢皮球的感觉。如果我们后期为了优化和完善这个业务流程而添加新的审批角色，或者进一步增加更加复杂的逻辑，那么情况就会变得更糟。
 * 申请人不得不跟着学习这个流程，
 * 不停修改自己的申请逻辑，无形中增加了维护成本。但是对审批人来说，他们只能负责自己职权范围内的业务，否则就是越权，所以处理不了的只能让申请人去找上级。
 * 问题到底出在哪里？其实这一切都是工作流架构设计不合理导致的。
 */
public class Client {

    public static void main(String[] args) {
        int amount = 10000;//出差花费10000元
        // 先找专员张飞审批
        Staff staff = new Staff("张飞");
        if (!staff.approve(amount)) {
            //被驳回，找关二爷问问
            Manager manager = new Manager("关羽");
            if (!manager.approve(amount)) {
                //还是被驳回，只能找老大了
                CFO cfo = new CFO("刘备");
                cfo.approve(amount);
            }
        }
        /***********************
         无权审批，请找上级。【专员：张飞】
         无权审批，请找上级。【经理：关羽】
         审批通过。【总监：刘备】
         ***********************/
    }
}